{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 调整树的参数：subsample和colsample_bytree\n",
    "\n",
    "（colsample_bytree指的是列采样）\n",
    "\n",
    "## 先粗调，后细调"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "#导入必要的包\n",
    "from xgboost import XGBClassifier\n",
    "import xgboost as xgb\n",
    "\n",
    "import pandas as pd\n",
    "import numpy as np\n",
    "\n",
    "from sklearn.model_selection import GridSearchCV\n",
    "from sklearn.model_selection import StratifiedKFold\n",
    "\n",
    "from sklearn.metrics import log_loss\n",
    "\n",
    "from matplotlib import pyplot\n",
    "import seaborn as sns\n",
    "%matplotlib inline"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "train = pd.read_csv(\"./RentListingInquries_FE_train.csv\")\n",
    "test = pd.read_csv(\"./RentListingInquries_FE_test.csv\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "train = train[:2000]\n",
    "test = test[:1000]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "y_train = train['interest_level']\n",
    "X_train = train.drop(['interest_level'],axis=1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "kfold = StratifiedKFold(n_splits=5, shuffle=True, random_state=3)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{'colsample_bytree': [0.6, 0.7, 0.8, 0.9],\n",
       " 'subsample': [0.3, 0.4, 0.5, 0.6, 0.7, 0.8]}"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "subsample = [i/10.0 for i in range(3,9)]\n",
    "colsample_bytree = [i/10.0 for i in range(6,10)]\n",
    "param_test3_1 = dict(subsample = subsample,colsample_bytree = colsample_bytree)\n",
    "param_test3_1"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "D:\\train\\Anaconda2\\lib\\site-packages\\sklearn\\model_selection\\_search.py:761: DeprecationWarning: The grid_scores_ attribute was deprecated in version 0.18 in favor of the more elaborate cv_results_ attribute. The grid_scores_ attribute will not be available from 0.20\n",
      "  DeprecationWarning)\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "([mean: -0.69013, std: 0.01854, params: {'subsample': 0.3, 'colsample_bytree': 0.6},\n",
       "  mean: -0.68535, std: 0.01677, params: {'subsample': 0.4, 'colsample_bytree': 0.6},\n",
       "  mean: -0.67926, std: 0.01050, params: {'subsample': 0.5, 'colsample_bytree': 0.6},\n",
       "  mean: -0.68204, std: 0.01727, params: {'subsample': 0.6, 'colsample_bytree': 0.6},\n",
       "  mean: -0.67827, std: 0.01457, params: {'subsample': 0.7, 'colsample_bytree': 0.6},\n",
       "  mean: -0.68103, std: 0.01386, params: {'subsample': 0.8, 'colsample_bytree': 0.6},\n",
       "  mean: -0.68556, std: 0.01741, params: {'subsample': 0.3, 'colsample_bytree': 0.7},\n",
       "  mean: -0.68433, std: 0.01384, params: {'subsample': 0.4, 'colsample_bytree': 0.7},\n",
       "  mean: -0.68134, std: 0.01246, params: {'subsample': 0.5, 'colsample_bytree': 0.7},\n",
       "  mean: -0.68401, std: 0.01204, params: {'subsample': 0.6, 'colsample_bytree': 0.7},\n",
       "  mean: -0.68216, std: 0.01403, params: {'subsample': 0.7, 'colsample_bytree': 0.7},\n",
       "  mean: -0.68035, std: 0.01518, params: {'subsample': 0.8, 'colsample_bytree': 0.7},\n",
       "  mean: -0.68415, std: 0.01862, params: {'subsample': 0.3, 'colsample_bytree': 0.8},\n",
       "  mean: -0.68342, std: 0.01571, params: {'subsample': 0.4, 'colsample_bytree': 0.8},\n",
       "  mean: -0.68090, std: 0.01593, params: {'subsample': 0.5, 'colsample_bytree': 0.8},\n",
       "  mean: -0.67750, std: 0.01052, params: {'subsample': 0.6, 'colsample_bytree': 0.8},\n",
       "  mean: -0.67914, std: 0.01155, params: {'subsample': 0.7, 'colsample_bytree': 0.8},\n",
       "  mean: -0.67756, std: 0.01336, params: {'subsample': 0.8, 'colsample_bytree': 0.8},\n",
       "  mean: -0.68516, std: 0.01958, params: {'subsample': 0.3, 'colsample_bytree': 0.9},\n",
       "  mean: -0.67999, std: 0.02044, params: {'subsample': 0.4, 'colsample_bytree': 0.9},\n",
       "  mean: -0.68048, std: 0.01726, params: {'subsample': 0.5, 'colsample_bytree': 0.9},\n",
       "  mean: -0.68081, std: 0.01540, params: {'subsample': 0.6, 'colsample_bytree': 0.9},\n",
       "  mean: -0.67887, std: 0.01554, params: {'subsample': 0.7, 'colsample_bytree': 0.9},\n",
       "  mean: -0.67971, std: 0.01540, params: {'subsample': 0.8, 'colsample_bytree': 0.9}],\n",
       " {'colsample_bytree': 0.8, 'subsample': 0.6},\n",
       " -0.67750241563329472)"
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "xgb3_1 = XGBClassifier(\n",
    "    learning_rate = 0.1,\n",
    "    n_estimators = 72,\n",
    "    max_depth = 3,\n",
    "    min_child_weight = 3,\n",
    "    gamma = 0,\n",
    "    subsample = 0.3,\n",
    "    colsample_bytree = 0.8,\n",
    "    colsample_bylevel = 0.7,\n",
    "    objective = 'multi:softprob',\n",
    "    seed = 3\n",
    ")\n",
    "gsearch3_1 = GridSearchCV(xgb3_1,param_grid=param_test3_1,scoring='neg_log_loss',n_jobs=-1,cv=kfold)\n",
    "gsearch3_1.fit(X_train,y_train)\n",
    "\n",
    "gsearch3_1.grid_scores_, gsearch3_1.best_params_, gsearch3_1.best_score_"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Best: -0.677502 using {'subsample': 0.6, 'colsample_bytree': 0.8}\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "D:\\train\\Anaconda2\\lib\\site-packages\\sklearn\\utils\\deprecation.py:122: FutureWarning: You are accessing a training score ('mean_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "D:\\train\\Anaconda2\\lib\\site-packages\\sklearn\\utils\\deprecation.py:122: FutureWarning: You are accessing a training score ('std_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "D:\\train\\Anaconda2\\lib\\site-packages\\sklearn\\utils\\deprecation.py:122: FutureWarning: You are accessing a training score ('split0_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "D:\\train\\Anaconda2\\lib\\site-packages\\sklearn\\utils\\deprecation.py:122: FutureWarning: You are accessing a training score ('split1_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "D:\\train\\Anaconda2\\lib\\site-packages\\sklearn\\utils\\deprecation.py:122: FutureWarning: You are accessing a training score ('split2_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "D:\\train\\Anaconda2\\lib\\site-packages\\sklearn\\utils\\deprecation.py:122: FutureWarning: You are accessing a training score ('split3_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "D:\\train\\Anaconda2\\lib\\site-packages\\sklearn\\utils\\deprecation.py:122: FutureWarning: You are accessing a training score ('split4_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x148a4ef0>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "print(\"Best: %f using %s\" % (gsearch3_1.best_score_, gsearch3_1.best_params_))\n",
    "test_means = gsearch3_1.cv_results_[ 'mean_test_score' ]\n",
    "test_stds = gsearch3_1.cv_results_[ 'std_test_score' ]\n",
    "train_means = gsearch3_1.cv_results_[ 'mean_train_score' ]\n",
    "train_stds = gsearch3_1.cv_results_[ 'std_train_score' ]\n",
    "\n",
    "pd.DataFrame(gsearch3_1.cv_results_).to_csv('my_preds_subsampleh_colsample_bytree_1.csv')\n",
    "test_scores = np.array(test_means).reshape(len(colsample_bytree),len(subsample))\n",
    "train_scores = np.array(train_means).reshape(len(colsample_bytree), len(subsample))\n",
    "\n",
    "for i, value in enumerate(colsample_bytree):\n",
    "    pyplot.plot(subsample, -test_scores[i], label= 'test_colsample_bytree:'   + str(value))\n",
    "#for i, value in enumerate(min_child_weight):\n",
    "#    pyplot.plot(max_depth, train_scores[i], label= 'train_min_child_weight:'   + str(value))\n",
    "    \n",
    "pyplot.legend()\n",
    "pyplot.xlabel( 'subsample' )                                                                                                      \n",
    "pyplot.ylabel( 'Log Loss' )\n",
    "pyplot.savefig( 'subsample_vs_colsample_bytree1.png' )"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 2",
   "language": "python",
   "name": "python2"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 2
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython2",
   "version": "2.7.14"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
